Generally described, computing devices utilize a communication network, or a series of communication networks, to exchange data. Companies and organizations operate computer networks that interconnect a number of computing devices to support operations or provide services to third parties. The computing systems can be located in a single geographic location or located in multiple, distinct geographic locations (e.g., interconnected via private or public communication networks). Specifically, data centers or data processing centers, herein generally referred to as a “data center,” may include a number of interconnected computing systems to provide computing resources to users of the data center. The data centers may be private data centers operated on behalf of an organization or public data centers operated on behalf, or for the benefit of, the general public.
To facilitate increased utilization of data center resources, virtualization technologies may allow a physical computing node, such as a single physical computing device, to host one or more instances of virtual machines that appear and operate as independent computing devices to users of a data center. With the introduction of virtualization technology, a computing service provider can now provide computing resources or services to customers dynamically or in a scalable manner. For example, a single physical computing node can create, maintain, delete, or otherwise manage virtual machines in a dynamic manner. The physical computing nodes can be interconnected by communication networks and grouped into availability zones, such as a data center. Further, the computing service provider can operate multiple availability zones in a geographical region.
In some scenarios, virtual machine instances may be configured according to a number of virtual machine instance types to provide specific functionality. For example, various computing devices may be associated with different combinations of operating systems or operating system configurations, virtualized hardware resources and software applications to enable a computing device to provide different desired functionalities, or to provide similar functionalities more efficiently. These virtual machine instance type configurations are often contained within a device image, which includes static data containing the software (e.g., the OS and applications together with their configuration and data files, etc.) that the virtual machine will run once started. The device image is typically stored on the disk used to create or initialize the instance. Thus, a computing device may process the device image in order to implement the desired software configuration.
As user demands for virtual machine instances increase, the computing service provider can adjust or allocate physical computing resources, such as building additional server rooms, adding more racks of servers, or re-provisioning existing computing nodes, across various availability zones to meet the demand. The computing service provider is generally interested in efficiently adjusting or allocating the physical computing resources to adequately cope with user demands.